/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cursoexperto.jftf.controller;

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import org.cursoexperto.jftf.controller.exceptions.NonexistentEntityException;
import org.cursoexperto.jftf.controller.exceptions.PreexistingEntityException;
import org.cursoexperto.jftf.entidades.Categoria;

/**
 *
 * @author Jose Fernando
 */
public class CategoriaJpaController {

    public CategoriaJpaController() {
        emf = Persistence.createEntityManagerFactory("WebApplicationPU");
    }
    private EntityManagerFactory emf = null;

    /**
      * Devuelve el EntityManager
      * @return EntityManager.
      */
    public EntityManager getEntityManager() {
        return emf.createEntityManager();
    }

     /**
      * Encuentra todas las categorias existentes.
      * @return Lista de categorias.
      */
    public List<Categoria> findCategoriaEntities() {
        EntityManager em = null;
        try {
            em = getEntityManager();
            Query q = em.createQuery("select object(o) from Categoria as o");
            return q.getResultList();
        } finally {
            em.close();
        }
    }

    /**
     * Devuelve la categoria para su identificador.
     * @param id identificador de la catergoria a buscar
     * @return Devuelve la categoria correspondiente a la busqueda o null
     */
    public Categoria findCategoria(Long id) {
        EntityManager em = null;
        try {
            em = getEntityManager();
            return em.find(Categoria.class, id);
        } finally {
            em.close();
        }
    }

     /**
      * Crea en base de datos un registro para el objeto Categoria
      * @param categoria identificador de la catergoria a buscar
      */
    public void create(Categoria categoria) throws PreexistingEntityException, Exception {
        throw new UnsupportedOperationException("Metodo no implementado");
    }
     /**
      * Edita en base de datos un registro para el objeto Categoria
      * @param categoria identificador de la catergoria a editar
      */
    public void edit(Categoria categoria) throws NonexistentEntityException, Exception {
        throw new UnsupportedOperationException("Metodo no implementado");
    }
     /**
      * Borra en base de datos un registro para el objeto Categoria
      * @param id identificador de la catergoria a borrar
      */
    public void destroy(Long id) throws NonexistentEntityException {
        throw new UnsupportedOperationException("Metodo no implementado");
    }
}
